// #include <iostream>
// #include <unistd.h>
// #include <signal.h>

//信号是进程之间事件异步通知的⼀种⽅式，属于软中断。

// void handler(int signumber) {
//   std::cout << "我是: " << getpid() << ", 我获得了⼀个信号: " << signumber
//             << std::endl;
// }
// int main() {
//   std::cout << "我是进程: " << getpid() << std::endl;
//   signal(SIGINT /*2*/, handler);
//   while (true) {
//     std::cout << "I am a process, I am waiting signal!" << std::endl;
//     sleep(1);
//   }

//   return 0;
// }

//忽略指定信号
// void handler(int signumber) {
//   std::cout << "我是: " << getpid() << ", 我获得了⼀个信号: " << signumber
//             << std::endl;
// }
// int main() {
//   std::cout << "我是进程: " << getpid() << std::endl;
//   signal(SIGINT, SIG_DFL); // 设置忽略信号的宏 -- 程序运行后Ctrl+c就没用了
//   while (true) {
//     std::cout << "I am a process, I am waiting signal!" << std::endl;
//     sleep(1);
//   }
// }

// void handler(int signumber) {
//   std::cout << "我是: " << getpid() << ", 我获得了⼀个信号: " << signumber
//             << std::endl;
// }
// int main() {
//   std::cout << "我是进程: " << getpid() << std::endl;
//   signal(SIGSTOP /*3*/, handler);
//   while (true) {
//     std::cout << "I am a process, I am waiting signal!" << std::endl;
//     sleep(1);
//   }
// }

#include <iostream>
#include <signal.h>
#include <sys/types.h>
#include <unistd.h>

// // mykill -signumber pid
// int main(int argc, char *argv[]) {
//   if (argc != 3) {
//     std::cout << getpid() << std::endl;
//     std::cerr << "Usage: " << argv[0] << " -signumber pid" << std::endl;
//     return 1;
//   }
//   int number = std::stoi(argv[1] + 1); // 去掉-
//   pid_t pid = std::stoi(argv[2]);
//   int n = kill(pid, number);
//   return n;
// }

// void handler(int signumber) {
//   // 整个代码就只有这⼀处打印
//   std::cout << "获取了⼀个信号: " << signumber << std::endl;
// }
// // mykill -signumber pid
// int main() {
//   signal(2, handler); // 先对2号信号进⾏捕捉
//   // 每隔1S，⾃⼰给⾃⼰发送2号信号
//   while (true) {
//     sleep(1);
//     raise(2);
//   }
// }

void handler(int signumber) {
  // 整个代码就只有这⼀处打印
  std::cout << "获取了⼀个信号: " << signumber << std::endl;
}
// mykill -signumber pid
int main() {
  signal(SIGABRT, handler);
  while (true) {
    sleep(1);
    abort();
  }
}